package com.sise.Tree;

/**
 *      112. 路径总和
 *
 *      给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ，判断该树中是否存在 根节点到叶子节点 的路径，这条路径上所有节点值相加等于目标和 targetSum 。
 *      叶子节点 是指没有子节点的节点。
 */
public class _112_hasPathSum {
    public boolean hasPathSum(TreeNode root, int targetSum) {

        if (root == null) return false;                                     // 题目要求只要存在就返回 true，故此一开始将其设置为 false
        if (root.left == null && root.right == null){                       // 一开始的预想是 targetSum - root.val == 0，少了前提判断提交，需要 root 到达叶子节点的时候，才进行判断
            return targetSum - root.val == 0;
        }
        return hasPathSum(root.left, targetSum - root.val) ||      // 这里使用的是 或，只要有一个分支为 true，那么就说明存在
        hasPathSum(root.right, targetSum - root.val);
    }
}
